* {
	engine: adwaita;
	padding: 0;

	background-clip: padding-box;

	-GtkToolButton-icon-spacing: 4;

	-GtkTextView-error-underline-color: @error_color;

	-GtkPaned-handle-size: 5;

	-GtkCheckButton-indicator-size: 16;
	-GtkCheckMenuItem-indicator-size: 12;

	-GtkScrolledWindow-scrollbar-spacing: 3;
	-GtkScrolledWindow-scrollbars-within-bevel: 0;

	-GtkToolItemGroup-expander-size: 11;
	-GtkExpander-expander-size: 11;

	-GtkMenu-horizontal-padding: 0;
	-GtkMenu-vertical-padding: 0;

	-GtkWidget-link-color: @link_color;
	-GtkWidget-visited-link-color: @visited_link_color;
	-GtkIMHtml-hyperlink-color: @link_color;
	-GtkHTML-link-color: @link_color;

	-WnckTasklist-fade-overlay-rect: 0;

	-GtkWidget-focus-padding: 2;
	-GtkWidget-focus-line-width: 1;
	-adwaita-focus-border-color: @focus_border_color;
	-adwaita-focus-border-radius: 2;
	-adwaita-focus-border-dashes: 1;
	-GtkWindow-resize-grip-width: 11;
	-GtkWindow-resize-grip-height: 11;
}

/***************
 * Base States *
 ***************/

GtkWindow {
	color: @theme_fg_color;
}

* {
	background-color: @theme_bg_color;
}

*:selected,
*:selected:focus {
	background-color: @theme_selected_bg_color;
	color: @theme_selected_fg_color;
}

*:insensitive {
	background-color: @insensitive_bg_color;
	color: @insensitive_fg_color;
	text-shadow: 1 1 @insensitive_text_shadow_color;
	border-color: @insensitive_border_color;
}

GtkImage,
GtkImage:insensitive,
GtkLabel,
GtkLabel:insensitive {
	background-color: transparent;
}

/************
 * Tooltips *
 ************/
.tooltip {
	padding: 4px;
	border-style: solid;
	border-width: 1px;
	border-color: @theme_tooltip_border_color;
	border-radius: 0px;
	background-color: @theme_tooltip_bg_color;
	color: @theme_tooltip_fg_color;
}

.tooltip * {
	background-color: transparent;
}

/*****************
 * Miscellaneous *
 *****************/

.spinner:active {
	transition: 750ms linear loop;
}

.floating-bar {
	background-image: linear-gradient(
	                  to bottom,
	                  @theme_base_color 20%,
	                  shade(@theme_base_color, 0.9));
	background-color: @theme_base_color;
	border-color: @border_color;
	border-radius: 3px;
	border-width: 1px;
	border-style: solid;
}

.floating-bar.top {
	border-top-width: 0;
	border-top-right-radius: 0;
	border-top-left-radius: 0;
}

.floating-bar.right {
	border-right-width: 0;
	border-top-right-radius: 0;
	border-bottom-right-radius: 0;
}

.floating-bar.bottom {
	border-bottom-width: 0;
	border-bottom-right-radius: 0;
	border-bottom-left-radius: 0;
}

.floating-bar.left {
	border-left-width: 0;
	border-top-left-radius: 0;
	border-bottom-left-radius: 0;
}

.floating-bar .button {
	background-color: alpha (@theme_base_color, 0.0);
	background-image: none;
	border-style: none;
	border-image: none;
	-GtkButton-image-spacing: 0;
	-GtkButton-inner-border: 0;
}

.view.rubberband,
.rubberband {
	background-color: alpha (@theme_selected_bg_color, 0.35);
	border-color: @theme_selected_bg_color;
	border-style: solid;
	border-width: 1px;
	border-radius: 2px;
}

GtkStatusbar {
	padding: 5px;
	color: @theme_fg_color;
	-GtkStatusbar-shadow-type: none;
}

.dnd {
	border-width: 1px;
	border-style: solid;
	border-color: @theme_selected_bg_color;
	border-radius: 0;
}

GtkTreeView.view.separator,
GtkTreeView.separator,
.separator,
.separator:hover {
	color: shade(@border_color, 1.30);
}

.pane-separator,
.pane-separator:hover,
.pane-separator:selected {
	color: @theme_bg_color;
	background-color: @theme_bg_color;
	background-repeat: no-repeat;
	background-position: center;
}

/****************
 * Text Entries *
 ****************/

.entry {
	border-style: solid;
	padding: 4px;
	color: @entry_text_color;
	background-color: @theme_base_color;
}

.entry.progressbar {
	background-color: @theme_selected_bg_color;
	color: @theme_selected_fg_color;
}

.entry:selected {
	color: @theme_selected_fg_color;
	background-color: @theme_selected_bg_color;
}

.entry:insensitive {
	color: @insensitive_fg_color;
}

/* Entry background */
.entry {
	background-color: @entry_bg_color;
	background-image: linear-gradient(to bottom,
	                  @entry_inner_border_color 1px,
	                  @entry_bg_color 2px);
}

/* Focused entry background */
.entry:focus {
	background-image: none;
}

/* Insensitive entry background */
.entry:insensitive {
	background-image: linear-gradient(to bottom,
	                  @entry_insensitive_inner_border_color 2px,
	                  @entry_insensitive_bg_color 3px);
}

/*******************
 * Symbolic images *
 *******************/

.image {
	color: @internal_element_color;
}

.image:hover {
	color: @internal_element_hover_color;
}

.image:selected {
	color: @theme_selected_fg_color;
}

/*****************
 * Color Chooser *
 *****************/

GtkColorSwatch,
GtkColorSwatch:selected {
	engine: unico;
	border-width: 1px;
	border-style: solid;
	border-radius: 3px;
	border-color: @color_swatch_border_color;
	background-color: transparent;
	background-clip: border-box;
}

GtkColorSwatch:hover,
GtkColorSwatch:selected:hover {
	border-color: @color_swatch_hover_border_color;
	-unico-inner-stroke-width: 1;
	-unico-inner-stroke-color: white;
}

GtkColorChooserWidget #add-color-button:hover,
GtkColorChooserWidget #add-color-button:selected:hover {
	-unico-inner-stroke-width: 0;
}

.color-active-badge,
.color-active-badge:selected {
	border-style: solid;
	border-width: 2px;
	background-color: transparent;
}

.color-active-badge.color-light,
.color-active-badge.color-light:hover {
	border-color: @color_active_badge_light_border_color;
	color: @color_active_badge_light_color;
}

.color-active-badge.color-dark,
.color-active-badge.color-dark:hover {
	border-color: @color_active_badge_dark_border_color;
	color: @color_active_badge_dark_color;
}

GtkColorEditor GtkColorSwatch.color-light:hover,
GtkColorEditor GtkColorSwatch.color-dark:hover {
	background-image: none;
}

/****************
 * Progress bar *
 ****************/

/* FIXME: this should really be a margin... */
GtkProgressBar {
	padding: 0 0 1px 0;
}

/* progress component */
.progressbar,
.progressbar row,
.progressbar row:hover,
.progressbar row:selected,
.progressbar row:selected:focus {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@progressbar_gradient_a),
	                  color-stop (0.50, @progressbar_gradient_b),
	                  color-stop (0.50, @progressbar_gradient_c),
	                  to (@progressbar_gradient_d));
	border-radius: 3px;
	border-width: 1px;
	border-style: solid;
	border-color: @progressbar_border_color;
	-adwaita-progressbar-pattern: -gtk-gradient (linear,
	                              left top, right bottom,
	                              from (alpha (@progressbar_pattern_color, 0.00)),
	                              color-stop (0.49, alpha (@progressbar_pattern_color, 0.00)),
	                              color-stop (0.50, alpha (@progressbar_pattern_color, 0.20)),
	                              to (alpha (@progressbar_pattern_color, 0.20)));
}

.progressbar row:selected,
.progressbar row:selected:focus {
	border-color: shade(@progressbar_border_color, 0.85);
}

.progressbar.vertical {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  right top,
	                  from (@progressbar_gradient_a),
	                  color-stop (0.50, @progressbar_gradient_b),
	                  color-stop (0.50, @progressbar_gradient_c),
	                  to (@progressbar_gradient_d));
	-adwaita-progressbar-pattern: -gtk-gradient (linear,
	                              left bottom, right top,
	                              from (alpha (@progressbar_pattern_color, 0.00)),
	                              color-stop (0.49, alpha (@progressbar_pattern_color, 0.00)),
	                              color-stop (0.50, alpha (@progressbar_pattern_color, 0.20)),
	                              to (alpha (@progressbar_pattern_color, 0.20)));
}

/* for progressbars in cell renderers */
.trough row {
	padding: 0;
}

.trough row:selected,
.trough row:selected:focus {
	background-image: -gtk-gradient (linear,
	                  left top, left bottom,
	                  from (mix (@trough_gradient_a, @theme_selected_bg_color, 0.25)),
	                  to (mix (@trough_gradient_b, @theme_selected_bg_color, 0.25)));
}

/************
 * GtkScale *
 ************/

GtkScale {
	engine: unico;
	-unico-focus-border-color: transparent;
	-unico-focus-border-radius: 2;
	-unico-focus-fill-color: transparent;
	-unico-focus-outer-stroke-color: transparent;
	-GtkScale-slider-length: 21;
	-GtkRange-slider-width: 13;
	-GtkRange-trough-border: 0;
}

GtkScale.slider,
GtkScale.slider:hover,
GtkScale.slider:insensitive {
	border-radius: 0;
	border-style: none;
	background-color: transparent;
}

GtkScale.trough,
GtkScale.trough.highlight,
GtkScale.trough.vertical,
GtkScale.trough:insensitive {
	-unico-outer-stroke-width: 1px;
	-unico-outer-stroke-top-color: @scale_trough_outer_border_top_color;
	-unico-outer-stroke-right-color: @scale_trough_outer_border_right_color;
	-unico-outer-stroke-bottom-color: @scale_trough_outer_border_bottom_color;
	-unico-outer-stroke-left-color: @scale_trough_outer_border_left_color;
	border-image: none;
	border-style: solid;
	border-width: 1px;
	border-radius: 1px;
	background-image: none;
}

GtkScale.trough {
	margin: 8px 0;
	border-color: @scale_trough_border_color;
	background-color: @scale_trough_bg_color;
}

GtkScale.trough.vertical {
	margin: 0 8px;
}

GtkScale.trough.highlight {
	border-color: @scale_trough_highlight_border_color;
	background-color: @scale_trough_highlight_bg_color;
}

GtkScale.trough:insensitive {
	border-color: @scale_trough_insensitive_border_color;
	background-color: @scale_trough_insensitive_highlight_bg_color;
}

GtkScale.trough.highlight:insensitive {
	border-color: @scale_trough_highlight_insensitive_border_color;
	background-color: @scale_trough_highlight_insensitive_bg_color;
}

GtkScale.progressbar {
	background-color: @scale_progressbar_bg_color;
}

GtkScale.mark {
	color: @scale_mark_color;
}

/**********
 * Frames *
 **********/

.frame {
	border-width: 1px;
	border-color: @border_color;
	border-style: solid;
	border-radius: 3px;
	background-color: @theme_base_color;
	padding: 0;
}

GtkScrolledWindow.frame {
	border-style: solid;
	border-color: @border_color;
	border-width: 1px;
	border-radius: 2px;
	padding: 0;
}

/* avoid double borders when a viewport is
 * packed into a GtkScrolledWindow */
GtkScrolledWindow GtkViewport.frame {
	border-style: none;
}

/***********
 * Buttons *
 ***********/

.button,
.button.menuitem.menubar,
GtkComboBox.combobox-entry .button {
	padding: 1px 4px;
}

.button {
	-GtkButton-image-spacing: 4;
	-GtkButton-interior-focus: true;
	-GtkButton-default-border: 0;
	-GtkButton-inner-border: 3;
	color: @theme_text_color;
	border-style: solid;
	border-color: transparent;
}

/* We may want a background for focused buttons, but in the meantime let's remove it too */
.primary-toolbar .button,
.primary-toolbar .button:insensitive {
	background-image: none;
	background-color: transparent;
}

.primary-toolbar .button {
	border-image: none;
	border-style: solid;
	border-width: 1px 1px 2px 1px;
	border-color: transparent;
}

.primary-toolbar .button *:active,
.inline-toolbar .button *:active,
.button *:active {
	color: @button_active_text_color;
}

.button *:insensitive,
.button *:active:insensitive {
	color: @insensitive_fg_color;
}

.button .separator {
	color: shade(@internal_element_color, 1.30);
}

/*****************
 * GtkSpinButton *
 *****************/

.spinbutton .button,
.spinbutton .button:focus {
	color: @internal_element_color;
	padding: 2px 6px;
	border-width: 0 0 0 1px;
	border-radius: 0;
	border-style: solid;
	border-color: @spinbutton_border_color;
	border-image: none;
}

.spinbutton .button {
	background-color: transparent;
}

.spinbutton .button:insensitive {
	color: @internal_element_insensitive_color;
}

.spinbutton .button:active,
.spinbutton .button:active:focus,
.spinbutton .button:hover {
	color: @internal_element_hover_color;
}

.spinbutton .button:first-child {
	border-radius: 2px 0 0 2px;
}

.spinbutton .button:last-child {
	border-radius: 0 2px 2px 0;
}

/*********************
 * Button background *
 *********************/

/* Button background */
.button,
.spinbutton .button,
.toolbar .button.raised,
.toolbar .raised .button,
.toolbar .button.raised:focus,
.toolbar .raised .button:focus,
.toolbar GtkComboBox .button,
.toolbar GtkComboBox .button:focus,
GtkComboBox.combobox-entry .button,
.primary-toolbar GtkComboBox.combobox-entry .button,
GtkColorChooserWidget #add-color-button {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@button_gradient_a),
	                  color-stop (0.50, @button_gradient_b),
	                  color-stop (0.50, @button_gradient_c),
	                  to (@button_gradient_d));
	background-color: transparent;
}

/* Pushed button background */
.button:active,
.button:active:hover,
.spinbutton .button:active,
.spinbutton .button:active:hover,
.toolbar .button:active,
.toolbar .button:active:hover,
.toolbar .button.raised:active,
.toolbar .raised .button:active,
.toolbar .button.raised:active:hover,
.toolbar .raised .button:active:hover,
.primary-toolbar GtkComboBox.combobox-entry .button:active,
GtkComboBox.combobox-entry .button:active,
.primary-toolbar .button:active,
.primary-toolbar .button:active:hover,
.inline-toolbar .button:active,
.inline-toolbar .button:active:hover {
	background-image: linear-gradient(to bottom,
	                  @button_active_gradient_a,
	                  @button_active_gradient_b 3px,
	                  @button_active_gradient_c 4px,
	                  @button_active_gradient_d 50%,
	                  @button_active_gradient_e 50%,
	                  @button_active_gradient_f);
	background-color: transparent;
}

.trough,
.trough.highlight,
.trough row,
.trough row:hover {
	background-image: linear-gradient(to bottom,
	                  @trough_gradient_a,
	                  @trough_gradient_b 4px);
}

/* Flipped pushed button background for vertical progressbar through and the like */
.trough.vertical {
	background-image: linear-gradient(to right,
	                  @trough_gradient_a,
	                  @trough_gradient_b 4px);
}

/* Prelit button background */
.button:hover,
.spinbutton .button:hover,
.toolbar .button:hover,
.toolbar .button.raised:hover,
.toolbar .raised .button:hover,
.toolbar GtkComboBox .button:hover,
.primary-toolbar .button:hover,
GtkComboBox.combobox-entry .button:hover,
.primary-toolbar GtkComboBox.combobox-entry .button:hover,
GtkColorChooserWidget #add-color-button:hover {
	background-color: transparent;
	background-image: linear-gradient(to bottom,
	                  @button_hover_gradient_a 50%,
	                  @button_hover_gradient_b 50%,
	                  @button_hover_gradient_c);
}

/* Insensitive button background */
.button:insensitive,
.toolbar GtkComboBox .button:insensitive,
GtkComboBox.combobox-entry .button:insensitive {
	background-image: linear-gradient(to bottom,
	                  @button_insensitive_inner_border_color 1px,
	                  @button_insensitive_gradient_a 2px,
	                  @button_insensitive_gradient_b 50%,
	                  @button_insensitive_gradient_c 50%,
	                  @button_insensitive_gradient_d);
	background-color: @insensitive_bg_color;
}

/* Pushed + Insensitive button background */
.button:active:insensitive,
.toolbar .button:active:insensitive,
.toolbar GtkComboBox .button:active:insensitive {
	background-image: linear-gradient(to bottom,
	                  @button_active_insensitive_gradient_a,
	                  @button_active_insensitive_gradient_b 3px,
	                  @button_active_insensitive_gradient_c 4px,
	                  @button_active_insensitive_gradient_d 50%,
	                  @button_active_insensitive_gradient_e 50%,
	                  @button_active_insensitive_gradient_f);
	background-color: transparent;
}

/*****************
 * Notebooks and *
 * tabs          *
 *****************/

.notebook {
	padding: 0;
	border-color: @border_color;
	border-style: solid;
	border-width: 1px;
	background-clip: border-box;
	background-color: @notebook_bg_color;
	-GtkNotebook-tab-overlap: 2;
	-GtkNotebook-tab-curvature: 3;
	-GtkNotebook-initial-gap: 0;
}

.notebook GtkViewport {
	background-color: @theme_base_color;
}

.notebook tab {
	padding: 3px;
	border-radius: 3px;
	border-style: solid;
	/* we draw our own custom border here for now */
	border-width: 0;
}

.notebook tab,
.notebook tab.left,
.notebook tab.right {
	background-image: linear-gradient(to bottom,
	                  @notebook_tab_inner_border_color 1px,
	                  @notebook_tab_gradient_a 2px,
	                  @notebook_tab_gradient_b 50%,
	                  @notebook_tab_gradient_c 50%,
	                  @notebook_tab_gradient_d);
}

.notebook tab:active {
	-adwaita-border-gradient: -gtk-gradient (linear,
	                          left top, left bottom,
	                          from (@notebook_active_tab_border_gradient_a),
	                          to (@notebook_active_tab_border_gradient_b));
	background-image: linear-gradient(to bottom,
	                  @notebook_active_tab_strip_gradient_a,
	                  @notebook_active_tab_strip_gradient_b 3px,
	                  @notebook_active_tab_strip_border_bottom_color 4px,
	                  @notebook_active_tab_gradient_a 5px,
	                  @notebook_active_tab_gradient_b 95%,
	                  @notebook_active_tab_border_bottom_color);
}

.notebook tab.top {
	padding: 4px 2px 0;
}

.notebook tab.top:active {
	padding-top: 7px;
}

.notebook tab.bottom {
	padding: 0 2px 4px;
}

.notebook tab.bottom:active {
	padding-bottom: 7px;
}

.notebook tab.left {
	padding: 2px 0 2px 4px;
	border-width: 1px 0 1px 1px;
}

.notebook tab.left:active {
	padding-left: 7px;
	border-left-color: @notebook_active_tab_border_gradient_a;
}

.notebook tab.right {
	padding: 2px 4px 2px 0;
	border-width: 1px 1px 1px 0;
}

.notebook tab.right:active {
	padding-right: 7px;
	border-right-color: @notebook_active_tab_border_gradient_a;
}

.notebook tab.left:active,
.notebook tab.right:active {
	background-image: linear-gradient(to bottom,
	                  @notebook_active_tab_strip_gradient_a,
	                  @notebook_active_tab_strip_gradient_b 3px,
	                  @notebook_active_tab_strip_border_bottom_color 4px,
	                  @notebook_active_tab_gradient_a 4px,
	                  @notebook_active_tab_gradient_b);
}

/* close button styling */
.notebook tab .button,
.notebook tab .button:active,
.notebook tab .button:hover {
	border-image: none;
	border-style: none;
	background-image: none;
	background-color: transparent;
}

.notebook tab .button GtkImage {
	border-radius: 3px;
	color: mix(@theme_fg_color, @theme_base_color, 0.6); /* FIXME*/
	border-style: solid;
	border-color: transparent;
	border-width: 1px;
	padding: 0;
}

.notebook tab .button GtkImage:hover {
	color: @theme_fg_color; /* FIXME*/
	border-color: alpha(black, 0.1); /* FIXME*/
}

.notebook tab .button GtkImage:active,
.notebook tab .button GtkImage:active:hover {
	background-color: alpha(black, 0.08); /* FIXME*/
	color:  @theme_base_color; /* FIXME*/
	border-color: alpha(black, 0.27)
	              alpha(black, 0.13)
	              alpha(black, 0.13)
	              alpha(black, 0.13); /* FIXME*/
}

/**************
 * ComboBoxes *
 **************/

GtkComboBox {
	padding: 0;
	-GtkComboBox-arrow-scaling: 0.5;
	-GtkComboBox-shadow-type: none;
}

GtkComboBox *:insensitive {
	color: @insensitive_fg_color;
}

GtkComboBox .separator {
	/* always disable separators */
	-GtkWidget-wide-separators: true;
	-GtkWidget-horizontal-separator: 0;
	-GtkWidget-vertical-separator: 0;
}

GtkComboBox.combobox-entry .entry:first-child,
GtkComboBox.combobox-entry .button:first-child {
	border-image-width: 3px 0 4px 3px;
	border-radius: 3px 0 0 3px;
	border-right-width: 0;
}

GtkComboBox.combobox-entry .entry:last-child,
GtkComboBox.combobox-entry .button:last-child {
	border-image-width: 3px 3px 4px 0;
	border-radius: 0 3px 3px 0;
	border-left-width: 0;
}

GtkComboBox.combobox-entry .button:last-child {
	border-image-width: 3px 3px 4px 2px;
}

.primary-toolbar GtkComboBox.combobox-entry .entry:first-child,
.primary-toolbar GtkComboBox.combobox-entry .button:first-child {
	border-image-width: 4px 0 4px 4px;
	border-radius: 3px 0 0 3px;
	border-right-width: 0;
}

.primary-toolbar GtkComboBox.combobox-entry .entry:last-child,
.primary-toolbar GtkComboBox.combobox-entry .button:last-child {
	border-image-width: 4px 4px 4px 0;
	border-radius: 0 3px 3px 0;
	border-left-width: 0;
}

GtkComboBox.combobox-entry .button *:active,
GtkComboBox.combobox-entry .button *:active:hover {
	color: @theme_text_color;
}

GtkComboBox .button {
	color: @internal_element_color;
}

GtkComboBox .button *:hover {
	color: @theme_text_color;
}

/**************
 * Scrollbars *
 **************/

.scrollbar {
	background-image: none;
	border-style: solid;
	-GtkRange-trough-border: 0;
	-GtkScrollbar-has-backward-stepper: true;
	-GtkScrollbar-has-forward-stepper: true;
	-GtkRange-arrow-scaling: 0.444;
	-GtkRange-slider-width: 15;
	-GtkRange-stepper-size: 15px;
	-GtkScrollbar-min-slider-length: 30;
	-GtkRange-stepper-spacing: 0;
	-GtkRange-trough-under-steppers: 0;
}

.scrollbars-junction {
	background-image: none;
	background-color: @scrollbars_junction_bg_color;
}

.scrollbars-junction,
.scrollbar.trough {
	border-color: @scrollbar_trough_border_color;
	border-radius: 0;
	border-image: none;
}

.scrollbar.trough.horizontal {
	border-width: 1px 0px;
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  color-stop (0, @scrollbar_trough_gradient_a),
	                  color-stop (0.5, @scrollbar_trough_gradient_b));
}

.scrollbar.trough.vertical {
	border-width: 0px 1px;
	background-image: -gtk-gradient (linear,
	                  left top,
	                  right top,
	                  color-stop (0, @scrollbar_trough_gradient_a),
	                  color-stop (0.5, @scrollbar_trough_gradient_b));
}

.scrollbar.button {
	engine: adwaita;
	border-width: 1px;
	border-image: none;
	border-color: @scrollbar_button_border_color;
	background-image: none;
	background-color: transparent;
	color: @scrollbar_button_color;
}

.scrollbar.button.top {
	border-radius: 3px 3px 0px 0px;
}

.scrollbar.button.bottom {
	border-radius: 0px 0px 3px 3px;
}

.scrollbar.button.left {
	border-radius: 3px 0px 0px 3px;
}

.scrollbar.button.right {
	border-radius: 0px 3px 3px 0px;
}

.scrollbar.button.horizontal {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@scrollbar_button_gradient_a),
	                  color-stop (0.50, @scrollbar_button_gradient_b),
	                  color-stop (0.50, @scrollbar_button_gradient_c),
	                  to (@scrollbar_button_gradient_d));
}

.scrollbar.button.vertical {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  right top,
	                  from (@scrollbar_button_gradient_a),
	                  color-stop (0.50, @scrollbar_button_gradient_b),
	                  color-stop (0.50, @scrollbar_button_gradient_c),
	                  to (@scrollbar_button_gradient_d));
}

.scrollbar.button.horizontal:hover {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@scrollbar_button_hover_gradient_a),
	                  color-stop (0.50, @scrollbar_button_hover_gradient_b),
	                  color-stop (0.50, @scrollbar_button_hover_gradient_c),
	                  to (@scrollbar_button_hover_gradient_d));
}

.scrollbar.button.vertical:hover {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  right top,
	                  from (@scrollbar_button_hover_gradient_a),
	                  color-stop (0.50, @scrollbar_button_hover_gradient_b),
	                  color-stop (0.50, @scrollbar_button_hover_gradient_c),
	                  to (@scrollbar_button_hover_gradient_d));
}

.scrollbar.button.horizontal:active {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@scrollbar_button_active_gradient_a),
	                  color-stop (0.50, @scrollbar_button_active_gradient_b),
	                  color-stop (0.50, @scrollbar_button_active_gradient_c),
	                  to (@scrollbar_button_active_gradient_d));
}

.scrollbar.button.vertical:active {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  right top,
	                  from (@scrollbar_button_active_gradient_a),
	                  color-stop (0.50, @scrollbar_button_active_gradient_b),
	                  color-stop (0.50, @scrollbar_button_active_gradient_c),
	                  to (@scrollbar_button_active_gradient_d));
}

.scrollbar.button:insensitive {
	color: @scrollbar_button_insensitive_color;
}

.scrollbar.button.top:insensitive {
	border-bottom: none;
}

.scrollbar.button.bottom:insensitive {
	border-top: none;
}

.scrollbar.button.left:insensitive {
	border-right: none;
}

.scrollbar.button.right:insensitive {
	border-left: none;
}

.scrollbar.slider {
	-unico-inner-stroke-width: 1px;
	background-image: none;
	border-radius: 0;
	border-style: solid;
	border-image: none;
	border-color: @scrollbar_slider_border_color;
	border-width: 1px;
}

.scrollbar.slider.horizontal {
	-unico-inner-stroke-gradient: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@scrollbar_slider_inner_border_gradient_a),
	                  color-stop (0.50, @scrollbar_slider_inner_border_gradient_b),
	                  color-stop (0.50, @scrollbar_slider_inner_border_gradient_c),
	                  to (@scrollbar_slider_inner_border_gradient_d));
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@scrollbar_slider_gradient_a),
	                  color-stop (0.50, @scrollbar_slider_gradient_b),
	                  color-stop (0.50, @scrollbar_slider_gradient_c),
	                  to (@scrollbar_slider_gradient_d));
}

.scrollbar.slider.vertical {
	-unico-inner-stroke-gradient: -gtk-gradient (linear,
	                  left top,
	                  right top,
	                  from (@scrollbar_slider_inner_border_gradient_a),
	                  color-stop (0.50, @scrollbar_slider_inner_border_gradient_b),
	                  color-stop (0.50, @scrollbar_slider_inner_border_gradient_c),
	                  to (@scrollbar_slider_inner_border_gradient_d));
	background-image: -gtk-gradient (linear,
	                  left top,
	                  right top,
	                  from (@scrollbar_slider_gradient_a),
	                  color-stop (0.50, @scrollbar_slider_gradient_b),
	                  color-stop (0.50, @scrollbar_slider_gradient_c),
	                  to (@scrollbar_slider_gradient_d));
}

.scrollbar.slider.horizontal:hover {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@scrollbar_slider_hover_gradient_a),
	                  color-stop (0.50, @scrollbar_slider_hover_gradient_b),
	                  color-stop (0.50, @scrollbar_slider_hover_gradient_c),
	                  to (@scrollbar_slider_hover_gradient_d));
}

.scrollbar.slider.vertical:hover {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  right top,
	                  from (@scrollbar_slider_hover_gradient_a),
	                  color-stop (0.50, @scrollbar_slider_hover_gradient_b),
	                  color-stop (0.50, @scrollbar_slider_hover_gradient_c),
	                  to (@scrollbar_slider_hover_gradient_d));
}

/*********
 * Menus *
 *********/

/* combobox menus */
GtkTreeMenu.menu {
	background-color: @theme_base_color;
}

GtkTreeMenu .menuitem {
	padding: 2px;
}

GtkTreeMenu .menuitem * {
	color: @theme_text_color;
}

.menu {
	background-color: @menu_bg_color;
	color: @menu_fg_color;
	padding: 3px;
	border-style: solid;
	border-width: 1px;
	border-color: @menu_border_color;
}

.menu.button {
	background-image: none;
	background-color: @theme_base_color;
	color: @internal_element_color;

	border-image: none;
	border-style: none;
}

.menu.button:hover {
	background-image: none;
	background-color: @theme_base_color;
	color: @theme_text_color;

	border-image: none;
	border-style: none;
}

.menu.button:insensitive {
	background-color: @theme_base_color;
	color: lighter(@internal_element_color);

	border-image: none;
	border-style: none;
}

/* this controls the general appearance of the menubar */
.menubar {
	border-style: none;
	padding: 4px;
	-GtkWidget-window-dragging: true;
	-GtkMenuBar-internal-padding: 1;
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@menubar_gradient_a),
	                  color-stop (0.50, @menubar_gradient_b),
	                  to (@menubar_gradient_c));
}

.menubar .menuitem {
	border-style: none;
	padding: 3px 5px;
}

.menubar .menuitem:hover {
	background-color: @menu_bg_color;
	border-style: solid;
	border-width: 1px 1px 0px;
	border-color: @menubar_menuitem_hover_border_color;
	border-radius: 3px 3px 0 0;
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@menubar_menuitem_hover_gradient_a),
	                  color-stop (0.50, @menubar_menuitem_hover_gradient_b),
	                  color-stop (0.50, @menubar_menuitem_hover_gradient_c),
	                  to (@menubar_menuitem_hover_gradient_d));
}

.menubar .menuitem *:hover {
	border-width: 1px;
	color: @menubar_menuitem_hover_color;
}

.menu .menuitem {
	-GtkMenuItem-arrow-scaling: 0.5;
	padding: 4px;
}

.menu .menuitem:hover {
	border-radius: 0;
}

GtkTreeMenu .menuitem:hover,
.menu .menuitem:active,
.menu .menuitem:hover {
	border-style: solid;
	border-width: 1px;
	border-color: @menubar_menuitem_hover_border_color;
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@menubar_menuitem_hover_gradient_a),
	                  color-stop (0.50, @menubar_menuitem_hover_gradient_b),
	                  color-stop (0.50, @menubar_menuitem_hover_gradient_c),
	                  to (@menubar_menuitem_hover_gradient_d));
}

GtkTreeMenu .menuitem *:hover,
.menu .menuitem:active,
.menu .menuitem *:active,
.menu .menuitem:hover,
.menu .menuitem *:hover {
	color: @theme_selected_fg_color;
}

.menu .menuitem:insensitive,
.menu .menuitem *:insensitive {
	color: mix (@menu_fg_color, @menu_bg_color, 0.6);
}

.menu .menuitem .accelerator:insensitive {
	color: mix (@menu_fg_color, @menu_bg_color, 0.7);
}

.menuitem .accelerator {
	color: alpha (@menu_fg_color, 0.4);
}

.menuitem .accelerator:hover,
.menuitem .accelerator:active {
	color: alpha (@menu_fg_color, 0.3);
}

.menuitem.arrow {
	color: @menu_controls_color;
}

.menuitem.separator {
	color: @menu_separator_color;

	-GtkMenuItem-horizontal-padding: 0;
}

.menuitem.check,
.menuitem.radio,
.menuitem.check:hover,
.menuitem.radio:hover,
.menuitem.check:insensitive,
.menuitem.radio:insensitive {
	background-image: none;
	background-color: transparent;
}

.menuitem.check:active,
.menuitem.radio:active {
	background-color: transparent;
}

/***************
 * Menu Button *
 ***************/

.button.menuitem.menubar:active,
.button.menuitem.menubar *:active {
	color: @theme_text_color;
	background-image: none;
	background-color: @menu_bg_color;
	border-radius: 5px 5px 0 0;
	border-image: none;
	border-width: 1px 1px 0 1px;
	border-color: shade(@border_color, 1.30);
	border-style: solid;
}

/****************
 * Radiobuttons *
 ****************/

.check,
.radio,
.check:insensitive,
.radio:insensitive {
	background-color: transparent;
	border-style: none;
}

.check row:selected:insensitive,
.check row:selected:focus:insensitive {
	background-color: transparent;
}

GtkCheckButton:hover,
GtkCheckButton:active:hover,
GtkCheckButton:selected,
GtkCheckButton:selected:focus {
	background-color: transparent;
}

/************
 * Toolbars *
 ************/

.toolbar {
	border-style: none;
	border-color: darker (@theme_bg_color);
	padding: 4px;
}

.toolbar .button {
	padding: 1px;
}

.toolbar:insensitive {
	color: alpha (@theme_fg_color, 0.6);
}

/********************
 * Menubar Toolbars *
 ********************/

.toolbar.menubar {
	border-style: none;
	-GtkToolbar-button-relief: normal;
	padding-left: 4px;
	padding-right: 4px;
}

/********************
 * Primary Toolbars *
 ********************/

/* applications using EggEditableToolbar usually set the primary-toolbar
 * hint on the containing vbox, so we need to handle both these cases here.
 */
.primary-toolbar .toolbar,
.primary-toolbar.toolbar {
	border-width: 1px 0 1px 0;
	border-radius: 0;
	border-style: solid;
	border-top-color: @toolbar_border_top_color;
	border-bottom-color: @toolbar_border_bottom_color;
	-GtkWidget-window-dragging: true;
	-GtkToolbar-button-relief: normal;
}

.primary-toolbar .toolbar:insensitive,
.primary-toolbar.toolbar:insensitive {
	background-image: none;
	background-color: shade (@theme_bg_color, 0.97);
	border-color: shade (@theme_bg_color, 0.91);
}

/* progressbars on primary toolbar entries are special */
.primary-toolbar .toolbar .entry.progressbar,
.primary-toolbar.toolbar .entry.progressbar {
	background-image: -gtk-gradient (linear,
	                  left top, left bottom,
	                  from (@trough_gradient_a),
	                  to (@trough_gradient_b));
	border-width: 1px;
	border-radius: 2px;
	border-style: solid;
	border-color: shade(@internal_element_color, 1.10);
	border-image: none;
	color: @theme_text_color;
}

/*******************
 * Inline toolbars *
 *******************/

.inline-toolbar.toolbar {
	border-width: 1px;
	border-radius: 0;
	border-style: solid;
	-GtkToolbar-button-relief: normal;
	padding: 4px;
}

.inline-toolbar.toolbar:last-child {
	border-width: 0 1px 1px 1px;
	border-radius: 0 0 3px 3px;
}

/* Primary and inline toolbars background */
.primary-toolbar .toolbar,
.primary-toolbar.toolbar,
.inline-toolbar.toolbar  {
	background-color: transparent;
	background-image: linear-gradient(to bottom,
	                  @toolbar_inner_border_color 1px,
	                  @toolbar_gradient_a 2px,
	                  @toolbar_gradient_b 50%,
	                  @toolbar_gradient_c 50%,
	                  @toolbar_gradient_d);
}

/***********
 * Sidebar *
 ***********/

.sidebar,
.sidebar .view {
	background-color: @sidebar_bg_color;
}

.sidebar .scrollbar.trough {
	border-radius: 100px;
	border-style: solid;
	border-width: 2px;
	border-color: transparent;
}

.sidebar .scrollbar.trough {
	background-color: shade(@sidebar_bg_color, 0.8);
}

.sidebar .scrollbar.slider {
	background-color: @sidebar_bg_color;
}

.sidebar .scrollbar.slider:hover {
	background-color: @theme_base_color;
}

.sidebar .radio,
.sidebar .radio:focus,
.sidebar .radio:selected {
	background-image: none;
	background-color: transparent;
}

/*******
 * OSD *
 *******/

.osd {
	color: @osd_fg_color;
	background-color: @osd_bg_color;
	border-width: 1px;
	border-style: solid;
	border-color: @osd_border_color;
}

/****************
 * GtkAssistant *
 ****************/

GtkAssistant .sidebar .highlight {
	color: @theme_fg_color;
	font: bold;
}

GtkAssistant .sidebar {
	padding: 12px;
	border-width: 1px;
	border-radius: 2px;
	border-style: solid;
	border-color: @gtkassistant_sidebar_border_color;
	color: mix (@theme_fg_color, @theme_bg_color, 0.40);
	background-color: shade (@theme_bg_color, 0.97);
	/* shall we make it like sidebars in general? */
}

/*************
 * GtkSwitch *
 *************/

GtkSwitch {
	color: @switch_color;
}

GtkScale.progressbar,
GtkSwitch.trough:active {
	color: @switch_trough_active_color;
}

GtkSwitch.trough:active {
	background-image: -gtk-gradient (linear,
	                  left top, left bottom,
	                  from (@switch_trough_active_gradient_a),
	                  to (@switch_trough_active_gradient_b));
}

GtkSwitch.trough:insensitive {
	background-image: none;
	background-color: @insensitive_bg_color;
	color: mix(@insensitive_bg_color, @insensitive_fg_color, 0.5); /* FIXME */
}

GtkSwitch.slider {
	border-width: 1px;
	border-radius: 2px;
	border-style: solid;
	border-color: @switch_slider_border_color;
	padding: 0px 0px 1px 0px;
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@switch_slider_gradient_a),
	                  color-stop (0.50, @switch_slider_gradient_b),
	                  color-stop (0.50, @switch_slider_gradient_c),
	                  to (@switch_slider_gradient_d));
	background-repeat: no-repeat;
	background-position: center;
}

GtkSwitch.slider:insensitive {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@switch_slider_insensitive_gradient_a),
	                  color-stop (0.50, @switch_slider_insensitive_gradient_b),
	                  color-stop (0.50, @switch_slider_insensitive_gradient_c),
	                  to (@switch_slider_insensitive_gradient_d));
	border-color: @insensitive_border_color;
}

GtkSwitch.slider:insensitive {
	border-color: mix(@insensitive_bg_color, @insensitive_fg_color, 0.5);
}

GtkTreeView {
	-GtkTreeView-vertical-separator: 0;
	-GtkTreeView-expander-size: 17;
	-GtkWidget-focus-line-width: 1;
	-GtkWidget-focus-padding: 1;
	-adwaita-focus-border-radius: 2;
	-adwaita-focus-border-dashes: 1;
	-adwaita-focus-border-color: @gtktreeview_focus_border_color;
}

GtkTreeView.dnd {
	border-color: @internal_element_color;
	border-radius: 2px;
	border-width: 1px;
	border-style: solid;
}

GtkViewport,
GtkIconView {
	border-radius: 3px;
	padding: 0;
	background-color: @theme_base_color;
}

GtkIconView.view.cell:selected,
GtkIconView.view.cell:selected:focus {
	background-color: @theme_selected_bg_color;
	color: @theme_selected_fg_color;
	border-radius: 4px;
	/* FIXME: this probably needs to be better;
	 * see https://bugzilla.gnome.org/show_bug.cgi?id=644157
	 */
	-adwaita-focus-border-color: @focus_border_color;
	-adwaita-focus-border-radius: 3;
	-adwaita-focus-border-dashes: 0;
}

.view,
GtkTreeView {
	background-color: @theme_base_color;
	color: @theme_text_color;
}

.view:selected,
GtkTreeView:selected {
	background-color: @theme_selected_bg_color;
	color: @theme_selected_fg_color;
}

.view:insensitive,
GtkTreeView:insensitive {
	background-color: @insensitive_bg_color;
	color: @insensitive_fg_color;
}

GtkTreeView:selected:focus {
	-adwaita-focus-border-color: mix(@theme_selected_fg_color, @theme_selected_bg_color, 0.30);
}

column-header.button,
column-header .button {
	color: @internal_element_color;
}

column-header.button,
column-header .button,
column-header.button:insensitive,
column-header .button:insensitive,
column-header.button:hover,
column-header .button:hover,
column-header.button:focus:hover,
column-header .button:focus:hover {
	background-color: @theme_base_color;
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@column_header_button_gradient_a),
	                  color-stop (0.50, @column_header_button_gradient_b),
	                  color-stop (0.50, @column_header_button_gradient_c),
	                  to (@column_header_button_gradient_d));
	padding: 0 4px;
	font-weight: normal;
}

column-header.button:insensitive,
column-header .button:insensitive {
	background-color: @insensitive_bg_color;
}

column-header.button:hover,
column-header .button:hover,
column-header.button:focus:hover,
column-header .button:focus:hover,
column-header.button:active:focus:hover,
column-header .button:active:focus:hover,
column-header.button:active:focus,
column-header .button:active:focus,
column-header.button:active:hover,
column-header .button:active:hover,
column-header.button *:active,
column-header .button *:active,
column-header.button *:active:hover,
column-header .button *:active:hover {
	color: @internal_element_hover_color;
}

column-header.button:active,
column-header .button:active,
column-header.button:active:hover,
column-header .button:active:hover,
column-header.button:active:hover:focus,
column-header .button:active:hover:focus,
column-header.button:active:focus,
column-header .button:active:focus {
	background-color: @entry_bg_color;
	background-image: none;
}

row:hover {
	border-width: 0;
}

row:insensitive {
	border-width: 0;
}

row:selected,
row:selected:focus {
	border-width: 0;
}

row:selected:focus,
.cell:selected {
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (@menubar_menuitem_hover_gradient_a),
	                  color-stop (0.50, @menubar_menuitem_hover_gradient_b),
	                  color-stop (0.50, @menubar_menuitem_hover_gradient_c),
	                  to (@menubar_menuitem_hover_gradient_d));
}

.cell {
	color: @theme_text_color;
	padding: 2px;
	border-width: 0;
}

.cell:selected {
	color: @theme_selected_fg_color;
}

.expander {
	border-style: solid;
	border-width: 1px;
	border-radius: 2px;
	border-color: shade (@internal_element_color, 1.40);
	color: @internal_element_color;
	background-color: @theme_base_color;
}

.expander:active {
	border-style: solid;
	border-width: 1px;
	color: @internal_element_color;
	border-color: shade (@internal_element_color, 1.40);
	background-color: @theme_base_color;
}

.expander:hover {
	border-style: solid;
	border-width: 1px;
	color: @internal_element_color;
	border-color: shade (@internal_element_color, 1.40);
	background-color: shade (@theme_bg_color, 1.02);
}

.expander row {
	border-radius: 2px;
}

.expander row:selected,
.expander row:selected:focus {
	border-style: solid;
	border-width: 1px;
	border-color: @focus_border_color;
	color: @expander_row_selected_color;
	background-color: @theme_selected_bg_color;
}

/* Calendars */
GtkCalendar {
	padding: 2px;
}

GtkCalendar.view {
	border-radius: 3px;
	border-style: solid;
	border-width: 1px;
	padding: 2px;
}

GtkCalendar.header {
	border-radius: 0;
	background-image: -gtk-gradient (linear,
	                  left top,
	                  left bottom,
	                  from (shade (@theme_bg_color, 1.04)),
	                  to (shade (@theme_bg_color, 0.89)));
	border-width: 0;
}

GtkCalendar.button,
GtkCalendar.button:insensitive {
	background-image: none;
	background-color: transparent;
}

.highlight,
GtkCalendar.highlight {
	background-color: @theme_selected_bg_color;
	color: @theme_selected_fg_color;
	border-radius: 0;
	padding: 0;
	border-width: 0;
}

/* Use different button and entry borders on infobars */
GtkInfoBar .entry,
GtkInfoBar .entry:focus,
GtkInfoBar .button,
GtkInfoBar .button:insensitive,
GtkInfoBar .button:active,
GtkInfoBar .button:focus,
GtkInfoBar .button:active:focus,
.info .entry,
.info .entry:focus,
.info .button,
.info .button:insensitive,
.info .button:active,
.info .button:focus,
.info .button:active:focus,
.warning .entry,
.warning .entry:focus,
.warning .button,
.warning .button:insensitive,
.warning .button:active,
.warning .button:focus,
.warning .button:active:focus,
.question .entry,
.question .entry:focus,
.question .button,
.question .button:insensitive,
.question .button:active,
.question .button:focus,
.question .button:active:focus,
.error .entry,
.error .entry:focus,
.error .button,
.error .button:insensitive,
.error .button:active,
.error .button:focus,
.error .button:active:focus {
	border-image: none;
	border-color: shade(@border_color, 0.9);
	border-style: solid;
	border-width: 1px;
}

GtkInfoBar:last-child,
.info:last-child,
.warning:last-child,
.question:last-child,
.error:last-child {
	/* only apply a border on the last infobar if
	 * there's more than one packed in */
	border-bottom-width: 1px;
	border-style: solid;
}

.info {
	background-color: @info_bg_color;
	color: @info_fg_color;
	border-color: darker(@info_bg_color);
}

.warning {
	background-color: @warning_bg_color;
	color: @warning_fg_color;
	border-color: darker(@warning_bg_color);
}

.question {
	background-color: @question_bg_color;
	color: @question_fg_color;
	border-color: darker(@question_bg_color);
}

.error {
	background-color: @error_bg_color;
	color: @error_fg_color;
	border-color: darker(@error_bg_color);
}

.view.dim-label,
.dim-label,
.dim-label:hover,
.dim-label:focus {
	color: mix (@theme_fg_color, @theme_bg_color, 0.50);
}

.dim-label:selected,
.dim-label:selected:focus {
	color: mix (@theme_selected_fg_color, @theme_base_color, 0.50);
}

/***************
 * Resize grip *
 ***************/

.grip {
	background-color: transparent;
}

